package com.yzh.springboot_rbac.controller;

import com.yzh.springboot_rbac.entity.Menu;
import com.yzh.springboot_rbac.service.MenuService;
import com.yzh.springboot_rbac.utils.AjaxResult;
import com.yzh.springboot_rbac.utils.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;


/**
 * 菜单管理功能模块
 */
@RestController
@RequestMapping("/menu")
public class MenuController extends BaseController {
    /*此控制器对菜单功能模块请求进行处理*/
    @Autowired
    private MenuService menuService;
    /**
     * 1.查询所有菜单
     * 条件：以树结构形式展示
     */
    @PostMapping("/selectAllMenu")
    public AjaxResult selectAllMenu() {
        List<Menu> list = menuService.selectAllMenu();
        return success(list);
    }

    /**
     * 2.添加菜单
     */
    @PostMapping("/addMenu")
    public AjaxResult addMenu(@RequestBody Menu menu) {
        Boolean flag = menuService.isAddMenu(menu);
        if (flag){
            return success(menu);
        } else {
            return error("用户已经存在");
        }
    }

    /**
     * 3.查询菜单通过条件
     */
    @PostMapping("/selectMenuByCondition")
    public AjaxResult selectMenuByCondition(@RequestBody Menu menu) {
        List<Menu> list = menuService.selectMenuByCondition(menu);
        if (list == null) {
            return error("用户不存在");
        } else {
            return success(list);
        }
    }

    /**
     * 4.删除菜单
     */
    @PostMapping("/deleteMenu")
    public AjaxResult deleteMenu(@RequestBody Menu menu) {
        Boolean flag = menuService.deleteMenu(menu);
        if (flag) {
            return success();
        } else {
            return error("用户删除失败，可能没权限");//这里没有涉及权限，不知道权限怎么设置，之后补充。
        }
    }

    /**
     * 5.修改菜单
     */
    @PostMapping("/updateMenu")
    public AjaxResult updateMenu(@RequestBody Menu menu) {
        Boolean flag = menuService.isUpdateMenu(menu);
        if (flag) {
            return success();
        } else {
            return error("权限问题或者参数为空问题导致更新失败");
        }
    }
}
